package applicationModel

import dominio.Planta
import dominio.Zombie
import java.util.ArrayList
import org.uqbar.commons.model.UserException
import org.uqbar.commons.utils.Observable

@Observable
class Fila {
	@Property ArrayList<Planta> plantas
	@Property String tipo
	@Property Zombie zombieAtacante
	@Property Integer id

	new(String tipo, Integer ide) {
		plantas = new ArrayList
		_tipo = tipo
		id = ide
	}

	def Planta ultimaPlanta() {
		getPlantas.last
	}

	def void agregar(Planta plantaAPlantar) {
		this.validarTipo(plantaAPlantar)
		getPlantas.add(plantaAPlantar.clone as Planta)
	}

	def void validarTipo(Planta plantaAPlantar) {
		if (! plantaAPlantar.getTipo.equals(this.getTipo)) {
			throw new UserException("Debe ser del mismo tipo")
		}
	}

	//def List<Class<?>> getTipos()
	def void eliminarPlanta() {
		plantas.remove(ultimaPlanta)
	}

	def boolean filaNula() {
		plantas.isNullOrEmpty
	}

}
